#!/usr/bin/env python
# -*- coding:utf-8 -*-
#1.写函数，函数可以支持接收任意数字（位置传参）并将所有数据相加并返回。
'''
def func(*args):
    sum = 0
    for i in args:
        sum=sum+i
    return sum
data=func(1,5,6,7)
print(data)
'''

#2看代码写结果
'''
def func():
    return 1,2,3

val = func()
print( type(val) == tuple ) #Ture
print( type(val) == list )#False
'''

#3.看代码写结果
# def func(*args,**kwargs):
#     pass

# a. 请将执行函数，并实现让args的值为 (1,2,3,4)
# b. 请将执行函数，并实现让args的值为 ([1,2,3,4],[11,22,33])
# c. 请将执行函数，并实现让args的值为 ([11,22],33) 且 kwargs的值为{'k1':'v1','k2':'v2'}
# d. 如执行 func(*{'武沛齐','金鑫','女神'})，请问 args和kwargs的值分别是？
# e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33])，请问 args和kwargs的值分别是？
# f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'})，请问 args和kwargs的值分别是？

# a.
'''
def func(*args,**kwargs):
    print(args)
func(1,2,3,4)
'''
# b
'''
def func(*args,**kwargs):
    return args
data=func([1,2,3,4],[11,22,33])
print(data)
'''
# c.
'''
def func(*args,**kwargs):
    return args,kwargs
data=func([11,22],33,k1='v1',k2='v2')
print(data)
'''
# d. 如执行 func(*{'武沛齐','金鑫','女神'})，请问 args和kwargs的值分别是？
'''
args=('武沛齐','金鑫','女神')
kwargs={}
'''
'''
def func(*args,**kwargs):
    return args,kwargs
data=func(*{'武沛齐','金鑫','女神'})
print(data)
'''
# e. 如执行 func({'武沛齐','金鑫','女神'},[11,22,33])，请问 args和kwargs的值分别是？
'''
args=({'武沛齐','金鑫','女神'},[11,22,33])
kwargs={}
'''
'''
def func(*args,**kwargs):
    return args,kwargs
data=func({'武沛齐','金鑫','女神'},[11,22,33])
print(data)
'''
#f. 如执行 func('武沛齐','金鑫','女神',[11,22,33],**{'k1':})，请问 args和kwargs的值分别是？
'''
args=('武沛齐','金鑫','女神',[11,22,33])
kwargs={'k1'='栈'}
'''
'''
def func(*args,**kwargs):
    return args,kwargs
data=func('武沛齐','金鑫','女神',[11,22,33],**{'k1':'栈'})
print(data)
'''
#4看代码写结果


# a. 执行 func('alex') ,判断是否可执行，如可以请问 name、age、email 的值分别是？
# 'alex',19,'123@qq.com'
'''
def func(name,age=19,email='123@qq.com'):
    return name,age,email
data=func('alex',99,'111@qq.com')
print(data)

'''


# b. 执行 func('alex',20) ,判断是否可执行，如可以请问 name、age、email 的值分别是？  # 'alex',20',123@qq.com'

# c. 执行 func('alex',20,30) ,判断是否可执行，如可以请问 name、age、email 的值分别是？  # 'alex',20,30


# d. 执行 func('alex',email='x@qq.com') ,判断是否可执行，如可以请问 name、age、email 的值分别是？#'alex',19,email='x@qq.com'


# e. 执行 func('alex',email='x@qq.com',age=99) ,判断是否可执行，如可以请问 name、age、email 的值分别是？#'alex',99,'x@qq.com'

# f. 执行 func(name='alex',99) ,判断是否可执行，如可以请问 name、age、email 的值分别是？  #不可以执行


# g. 执行 func(name='alex',99,'111@qq.com') ,判断是否可执行，如可以请问 name、age、email 的值分别是？#'alex',99,'111@qq.com'

#5.看代码写结果
'''
def func(users,name):
    users.append(name)
    return users

result = func(['武沛齐','李杰'],'alex')
print(result)
'''
#['武沛齐','李杰','alex']

#6.看代码写结果
'''
def func(v1):
    return v1* 2

def bar(arg):
    return "%s 是什么玩意？" %(arg,)

val = func('你')
data = bar(val)
print(data)
'''
#'你你 是什么玩意?'

#7.看代码写结果
'''
def func(v1):
    return v1* 2

def bar(arg):
    msg = "%s 是什么玩意？" %(arg,)
    print(msg)  #你你 是什么玩意

val = func('你')
data = bar(val)
print(data)###None

'''
#8看代码写结果
'''
v1 = '武沛齐'


def func():
    print(v1)


func()
v1 = '老男人'
func()
#'武沛齐'
#'老男人'

'''
#9看代码写结果
'''
v1 = '武沛齐'

def func():
    v1 = '景女神'
    def inner():
        print(v1)
    v1 = '肖大侠'
    inner()  
# func()   #'肖大侠'
# v1 = '老男人'
# func()#'肖大侠'
'''

#10.看代码写结果【可选】
'''
def func():
    data = 2*2
    return data

new_name = func
val = new_name()
print(val)
#4
# 注意：函数类似于变量，func代指一块代码的内存地址。
'''

#11看代码写结果【可选】
'''
def func():
    data = 2*2
    return data

data_list = [func,func,func]
for item in data_list:
    v = item()
    print(v)
#4 4 4
# 注意：函数类似于变量，func代指一块代码的内存地址。
'''

#12.看代码写结果（函数可以做参数进行传递）【可选】
'''
def func(arg):
    print(arg)



def show():
    print('show函数')


func(show)
'''

